Site cover image

Site icon imageSen(Qian)’s Memo

This website is Donglin Qian (Torin Sen)’s memo, especially about machine learning papers and competitive programming.

2023-ICML-Bidirectional Adaptation for Robust Semi-Supervised Learning with Inconsistent Data Distributions

https://openreview.net/forum?id=dZA7WtCULT

Introduction

Self-supervised LearningではUnlabeledを利用してうまく行くようになるときも、逆に性能が下がってしまう時もある。特に、Domain Shiftが起きているときは性能が逆に下がってしまうことが多い(変なpseudo labelをつけてしまう)

Domain Shiftの例

  • LabeledとUnlabeledが違うソースである。
  • Labeledが実データだが、Unlabeledが合成データ
  • Labeledが人手て集められていて、そこで役に立ちそうだとかなどで選択バイアスが生じている。

Domain Shiftについて、Unlabeledであるという性質上、我々が観測できるのはpL(x)pU(x)p_L(x) \neq p_U(x)だけである。だが、これは

  • Distribution Shift pL(y)pU(y)p_L(y) \neq p_U(y)
  • Intra-class Feature Distribution Shift pL(xy)pU(xy)p_L(x|y) \neq p_U(x|y)

これの合わせ技と言える。下の図の例として、ラベルの分布がそもそも違う(個数が違う)、同じラベルでもデータの分布が違うということになる。

Image in a image block

この問題については、Self-supervised Leanringは共変量シフトがない前提なので考慮していない。理論的にはいろんな研究があるが、未だにアルゴリズムレベルで落とし込めてはいない。

この論文では、PositiveとUnlabeledのDomain Shiftを考慮した手法を開発した。先行手法は訓練データで訓練して、pseudo labelを付与するが、テストデータでもそれを適用しようとするのでずれてしまう。他にも、訓練時にはLabelありとLabelなし(重みを調節して)で訓練してしたのに、テストするときはドメインが違うので性能が下がる問題がある。この研究では、以下のようなことがわかった。

  • 性能低下を招く3つの要因を特定した
    • Pseudo Label生成器と、Test Domainでの識別器が違う。
    • Pseudo Labelにバイアスがある。
    • サンプルの重みに制限がある
  • これらを解決するBidirectional Adaptationを開発。Pseudo Label予測器とTarget予測器を分離し、BiasのないPseudo Label予測器のためにUnlabeledデータの分布に適応し、BiasのないTarget予測器のためにTarget分布に適応する。
    • ようわからんので、後を読もう。

Related Work

Robust Self-supervised Learning

Oliver, Avital, et al. "Realistic evaluation of deep semi-supervised learning algorithms." Advances in neural information processing systems 31 (2018).
Chen, Yanbei, et al. "Semi-supervised learning under class distribution mismatch." Proceedings of the AAAI Conference on Artificial Intelligence. Vol. 34. No. 04. 2020.
Guo, L.-Z., Zhang, Z.-Y., Jiang, Y., Li, Y.-F., and Zhou, Z.- H. Safe deep semi-supervised learning for unseen-class unlabeled data. In Proceedings of the 37th International Conference on Machine Learning, pp. 3897–3906, 2020.
Guo, L.-Z. and Li, Y.-F. Class-imbalanced semi-supervised learning with adaptive thresholding. In Proceedings of the 39th International Conference on Machine Learning, pp. 8082–8094, 2022.

Domain Adaptation

違うドメインのデータでも、同じ特徴空間の上でマッピングする、重みを変更するなどをして、ドメインが違くとも学習できることが目標。

基本的に最大平均不一致(MMD)、Wasserstein距離、Contrast Domain Discrepancy

  • 最大平均不一致(MMD) 再生核ヒルベルト空間に写像したときの距離を最小化 📄Arrow icon of a page linkDistribution Shiftの基礎 にある通り。
  • Wassertein距離 最適輸送のコスト行列によって、定義される分布の間の距離。
  • Contrastive Domain Discrepancy(CDD) いろいろあるが以下の数式で評価する。D(z)D(z)はどのドメインからきているかを識別するもので、ziP,ziQz_i^P, z_i^Qはそれぞれのドメインからきている。

自己教師あり学習の理論

自己教師あり学習では、仮定を設けない限り教師あり学習を残念ながら超えることができない。逆に言えば、p(yx)p(y|\mathbf{x})についての効果的な仮定があれば肩を並べられる。

先行研究ではLabeledとUnlabeledの間にDomain Shiftがあることを研究したが、サンプリングによるバイアス=(biased PUのように)だけ考えている

理論的な結果

問題設定

  • サンプルはxRd\mathbf{x} \in \mathbb{R}^dであり、ラベルはy{0,,k1}y \in \{0, \cdot, k-1 \}となる。
  • ラベル付けされたnln_l個のサンプルの集合はDLD_L
  • ラベルがついてないnun_u個のサンプルの集合はDUD_U
  • この論文では、以下の条件を考える。
    • 同時分布の見た目は同じように見えるが、サンプルもラベルもズレているので奇跡的にあっている場合。
pL(x,y)=pT(x,y)pL(x)pT(x)p_L(\mathbf{x}, y) = p_T(\mathbf{x}, y) \\ p_L(\mathbf{x}) \neq p_T(\mathbf{x})
Natarajan次元

多クラス分類問題においてのVC次元の拡張であるNatarajan次元というものがあり、Ndim(H)Ndim(\mathcal{H})であるとする。

解説はこちら

Natarajan次元の定義は、仮説空間H\mathcal{H}に対して、d\exist d個のサンプルについて、ありえるクラスがkk個あるとき、kdk^d通りの割り当てができる、という最大のddがNatarajan次元である。

nnはサンプル数、kkはクラス数、δ\deltaは信頼度で、1δ1-\delta以上で成り立つという条件。

Image in a image block

ここでいうvarvar何かしらの確率変数についての分散ではなく、経験誤差Rn(h^)R_n (\hat{h})と真の識別器による誤差R(h^)R(\hat{h})の差について、これ以下に収まるというものである。

つまり、集中不等式で書くと、1δ1-\delta以上の確率で、以下が成り立つ。

Pr[Rn(h^)R(h^)16Ndim(H)log2nk+8log(2/δ)n]Pr[|R_n(\hat{h}) - R(\hat{h})| \leq \sqrt{\frac{16 Ndim(\mathcal{H}) \log \sqrt{2n} k + 8 \log (2 / \delta)}{n}}]
分布の不一致の定式化

2つの分布の間の不一致は、ある識別器ffを用いて以下のように定式化する。これはDomain Shiftにおける一般的な指標。

Disc(f,D1,D2)=ED1[f(x)y]ED2[f(x)y]Disc(f, D_1, D_2) = |\mathbb{E}_{D_1}[f(\mathbf{x}) \neq y] - \mathbb{E}_{D_2}[f(\mathbf{x}) \neq y]|

分布1と2について識別器ffの間違える率の差である。ここで間違える率がいかに小さいかは評価されず、いかに同じ間違える率なのかを見られる。

自己教師あり学習の目的

Target Domainにおけるエラーを最小化する識別器を選びたい。ラベルがないデータを使うので、自己教師あり学習はp(x),p(yx)p(\mathbf{x}), p(y|\mathbf{x})の間の関係を事前知識として与える。

従来の手法は、仮説空間の中から重要ではない関数を除外した上で選ぶか、新たな仮説空間に埋め込んでそれを基準にすることが多かった。

この研究では、ラベルありデータとラベルなしデータの分布が一致しないときでも分析できる理論フレームワークを提案した。Base Learnerという本来のLabeled以外にも、UnlabeledにPseudo Labelを付与してそれも学習に使う学習器のこと。今回はLabeledとUnlabeledの間でDomain Shiftがある前提なので、仮定AAが完全に正しいとしても、ラベルなしデータをベースに付与したPseudo LabelとLabeledはCovariance Shiftがある

形式的には、SSLには仮定AAがあり、DL,DUD_L, D_Uを使用して仮説空間H\mathcal{H}から擬似ラベル予測器hhを学習する。この予測器は、擬似ラベル付きラベルなしデータセットDUD_Uを得るのに役立つが、Covariance Shiftがあれば最適なものを学んでも根本的にずれることになる。

また、仕組みとしては訓練済か訓練途上のffがあり、それをもとにhhが決まるということになる。

LabeledとUnlabeledの間が同じ分布の時の理論評価

定理3.1

Unlabeledにpseudo labelを付与する識別器hHh \in \mathcal{H}があるとする。δ1,δ2[0,1]\delta_1, \delta_2 \in [0, 1]だとすると、(1δ1)(1δ2)(1-\delta_1)(1-\delta_2) 以上の確率で、以下が成り立つ。(ついでにいえば、1δ1δ21-\delta_1-\delta_2以上の確率であるともいえるので)

RU(h^)RL(h^)+var(h,nL,k,δ1)+var(h,nU,k,δ2)R_U(\hat{h}) \leq R_L(\hat{h}) + var(h, n_L, k, \delta_1) + var(h, n_U, k, \delta_2)
証明

これについては、分布DL,DUD_L, D_Uについてそれぞれ、集中不等式で評価すればよい。いずれも真の損失はR(h^)R(\hat{h})と書くことができるので、以下のようになる。

Pr[RnL(h^)R(h^)var(H,nL,k,δ1)]1δ1Pr[RnU(h^)R(h^)var(H,nU,k,δ2)]1δ2Pr[|R_n^L(\hat{h}) - R(\hat{h})| \leq var(\mathcal{H}, n_L, k, \delta_1)] \geq 1 - \delta_1 \\ Pr[|R_n^U(\hat{h}) - R(\hat{h})| \leq var(\mathcal{H}, n_U, k, \delta_2)] \geq 1 - \delta_2

これは絶対値の式なので、2つ目の式の絶対値の中の符号を逆転させることで、R(h^)R(\hat{h})がちょうど消える形にできる。よって、いずれの式も成り立つとき上のようになる。

この定理は、2つの同じ分布からサンプルされたデータ集合による誤差上界を評価しているだけ。

定理3.2

識別器ffと、Pseudo Labelを付与する識別器hhが同一ではないと考えてみる。δ1,δ2,δ3[0,1]\delta_1, \delta_2, \delta_3 \in [0, 1]だとするとき、(1δ1)(1δ2)(1δ3)1δ1δ2δ3(1-\delta_1)(1-\delta_2)(1-\delta_3) \geq 1-\delta_1-\delta_2-\delta_3以上の確率で以下の式が成り立つ。

DTD_Tは真の分布

RT(f,DTh,DL,DU)nLnL+nUR^L(f)+nUnL+nUR^U~(f)+var(F,nL+nU,k,δ1)+nUnL+nU{RL(h)+var(H,nL,k,δ2)+var(H,nU,k,δ3)}R^T(f, D_T|h, D_L, D_U) \leq \frac{n_L}{n_L + n_U} \hat{R}^L(f) + \frac{n_U}{n_L + n_U} \hat{R}^{\tilde{U}}(f) + var(\mathcal{F}, n_L+n_U, k, \delta_1) \\ + \frac{n_U}{n_L + n_U} \{ R^L(h) + var(\mathcal{H}, n_L, k, \delta_2) + var(\mathcal{H}, n_U, k, \delta_3) \}

U~\tilde{U}はPusedo Label付与器hhよってラベルを付与した状態での、ffに対する損失。右辺にあるのは上から説明すると、

  • Labeledについてのffの損失
  • Unlabeledを識別器hhによってラベル付けしたデータセットについての、ffの損失
  • F\mathcal{F}について、個数がnL+nUn_L+n_Uとした上界項
  • Labeledについてのhhの損失(1項目はffの損失である)
  • H\mathcal{H}について、個数がnLn_Lとした上界項
  • H\mathcal{H}について、個数がnUn_Uとした上界項
証明はこちら

自己教師あり学習では、DLD_LDU~D_{\tilde{U}}によって、訓練される。これの合成分布で学習するので、経験損失も合成すればいい。

nLnU+nLR^L(f)+nUnU+nLR^U~(f)\frac{n_L}{n_U + n_L} \hat{R}^L(f) + \frac{n_U}{n_U + n_L} \hat{R}^{\tilde{U}}(f)

このように合成したときの上界はvar(F,nL+nU,k,δ1)var(\mathcal{F}, n_L+n_U, k, \delta_1)となる。

次に、U~\tilde{U}を作り出すためのhhについての評価を行う。これは先ほど示したような上界が存在する。これについて全体での寄与は、nU/(nP+nU)n_U/(n_P+n_U)なので係数を乗じて、期待の式が得られた。

LabeledとUnlabeledの間の分布が異なる場合の評価

サンプリングしたLabeledDLD_L、サンプリングしたUnlabeledDUD_U、真の分布DTD_Tがそれぞれ全部違うという考えである。

今までの証明では同じ分布に従っていたので、代入して打ち消しと化することができたが分布が違えば打ち消すことはできず、Disc(f,D1,D2)=ED1[f(x)y]ED2[f(x)y]Disc(f, D_1, D_2) = |\mathbb{E}_{D_1}[f(\mathbf{x}) \neq y] - \mathbb{E}_{D_2}[f(\mathbf{x}) \neq y]|で考える。

定理3.3

Pseudo Labelを付与する識別器hhがあり、δ1,δ2[0,1]\delta_1, \delta_2 \in [0, 1]の時、(1δ1)(1δ2)1δ1δ2(1-\delta_1)(1 - \delta_2) \geq 1 - \delta_1 - \delta_2以上の確率で以下の式が成り立つ。

R^U(h)R^L(h)+var(H,nL,k,δ1)+var(H,nU,k,δ2)+Disc(h,DL,DU)\hat{R}_U(h) \leq \hat{R}_L(h) + var(\mathcal{H}, n_L, k, \delta_1) + var(\mathcal{H}, n_U, k, \delta_2) + Disc(h, D_L, D_U)

分布の違いがあるとき、DiscDiscという項が追加された。2つの分布における識別器hhの間違える率の違いということなので、右辺にこれが追加されるのも自然である

定理3.4

定理3.2のものも、同様にDiscDiscを加えることで分布が違う場合を評価できる。

便宜のために、DmixD_{mix}nL,nUn_L, n_Uで混合させたものだとおく。

識別器ffと、Pseudo Labelを付与する識別器hhが同一ではないと考えてみる。δ1,δ2,δ3[0,1]\delta_1, \delta_2, \delta_3 \in [0, 1]だとするとき、(1δ1)(1δ2)(1δ3)1δ1δ2δ3(1-\delta_1)(1-\delta_2)(1-\delta_3) \geq 1-\delta_1-\delta_2-\delta_3以上の確率で以下の式が成り立つ。

R(f,DTh,DL,DU)nLnL+nUR^L(f)+nUnL+nUR^U~(f)+var(F,nL+nU,k,δ1)+Disc(f,DT,Dmix)+nUnL+nU{RL(h)+var(H,nL,k,δ2)+var(H,nU,k,δ3)+Disc(H,DL,DU)}R(f, D_T|h, D_L, D_U) \leq \frac{n_L}{n_L + n_U} \hat{R}^L(f) + \frac{n_U}{n_L + n_U} \hat{R}^{\tilde{U}}(f) + \\ var(\mathcal{F}, n_L+n_U, k, \delta_1) + Disc(f, D_T, D_{mix})\\ + \frac{n_U}{n_L + n_U} \{ R^L(h) + var(\mathcal{H}, n_L, k, \delta_2) + var(\mathcal{H}, n_U, k, \delta_3) + Disc(\mathcal{H}, D_L, D_U)\}

これについても適宜Discを加えているだけである。

自己教師あり学習の分析

Domain Shiftを含む自己教師あり学習では、R(f,DTh,DL,DU)R(f, D_T|h, D_L, D_U)を最小化するのが目標である。

先行研究はどのように最小化を試みたか、そしてその欠点を説明する。

自己教師あり学習の定式化

自己教師あり学習は、Pseudo Labelを付与するか、一貫性のある正則化手法というのが二大方針であった。実はこの両方はhhffを見つけて、その差を小さくするということと同じらしい。

Pseudo Labelの付与は、h,fh, fをつなげる写像を見つけることが重要である。

  • 例えば、Soft LabelをHard Labelにそのまま変換する。指数移動平均で過去の予測結果をEnsembleなど。p(f(x))p(f(\mathbf{x}))といえる。
  • 一貫性のある正則化手法はffをもとに、Adversarial Exampleを提供したり普通にRandAugmentしたりすること。これは拡張をaaとして、a(f)(x)a(f)(\mathbf{x})といえる。
  • この2つの手法を合わせて。FixMatchがある。Hard Labelへの変換もしているし、データ拡張もしている。
    • FixMatchはこちらを参照。

既存の自己教師あり学習の欠点

hhffを紐づけている

当然といえば当然であるが、紐づけられている。DU,DPD_U, D_Pが同じ分布ならば問題がないが、DU,DPD_U, D_Pが違う分布になったら、当然性能が下がる。実際以下の式をh=p(a(f))h=p(a(f))のように合成させていくと、ffがすべてを決めることになっていて、DiscDiscが入るので最適化が難しい。

R(f,DTh,DL,DU)nLnL+nUR^L(f)+nUnL+nUR^U~(f)+var(F,nL+nU,k,δ1)+Disc(f,DT,Dmix)+nUnL+nU{RL(h)+var(H,nL,k,δ2)+var(H,nU,k,δ3)+Disc(H,DL,DU)}R(f, D_T|h, D_L, D_U) \leq \frac{n_L}{n_L + n_U} \hat{R}^L(f) + \frac{n_U}{n_L + n_U} \hat{R}^{\tilde{U}}(f) + \\ var(\mathcal{F}, n_L+n_U, k, \delta_1) + Disc(f, D_T, D_{mix})\\ + \frac{n_U}{n_L + n_U} \{ R^L(h) + var(\mathcal{H}, n_L, k, \delta_2) + var(\mathcal{H}, n_U, k, \delta_3) + Disc(\mathcal{H}, D_L, D_U)\}
Biasを含むPseudo Label

分布が一致しない場合、DPD_Pから見てDUD_UでPseudo Label付きはバイアスを含むということになる。Disc(h,DL,DU)Disc(h, D_L, D_U)を考慮してないから。

制限されたサンプルの重み

分布が違う場合、Sample Selectionによってできるだけ影響が出ないように選んで学習をするということができる。w(x)pU(x)=pT(x)=pP(x)w(\mathbf{x}) p_U(\mathbf{x}) = p_T(\mathbf{x})=p_P(\mathbf{x})という変換する重みの式を考えたい。(Labeledが真の分布であると仮定している)うまくWeightを調節することによって、DT,DmixD_T, D_{mix}のDiscを0に近づけたい。

しかし、先行研究ではサンプルの重みは往々にして閾値によって決定された0か1の値であった(最適化が楽だから)

提案手法

双方向Adaptationというフレームワークを設計した。

hhffを分離させる

分離させれば、別々に最適化できるようになって楽になる。

Pseudo LabelsのBiasを減らす

Pseudo Label予測器の最適化目的が、理想のffを得るようなLabelをつけることである。一方、Unsupervised LearningによるDomain Adaptationは2つのDomainを同じ特徴空間の上でマッピングしようとしているものであり、本質的には同じである

なので、既存のDomain Adaptationを用いて、hhを訓練できる。

次に、Unlabeledの分布に合致させた、hhを学習する。予測器から得られたもののSoft Label、Hard Labelを保存しておく。よく考えるとこれはppという操作する。

Image in a image block

制限されない重み

既存手法はDT,DL,DUD_T, D_L, D_UのDomain Shiftを考えていない。

重みを閾値ベースで超える超えないで01に割り振るのをやめましょう。DTD_Tの分布と重なるところの重みを大きく、重ならないところの重みを小さくすることを提案している

Pseudo Labelを付与された後、pU(y),pU(xy)p_U(y), p_U(\mathbf{x}|y)を計算できるので、ベイズの定理から一連の計算できる。

p(xy)p(\mathbf{x}|y)をクラス間の重みによる並べ替え

先ほど述べたように、分布と重なる部分の重みを大きく、重ならない部分の重みを軽くしたい。しかし、これは学習しやすいクラスとしにくいクラスがある以上、単純に信頼度を指標にするのは不公平である。

そこで、対象のデータの信頼度と、そのクラスに属するすべてのデータの信頼度を比較することで、ラベル付きデータの分布にどれだけ一致しているのかを測定する=正規化

ただし、クラス数が多いときはbatch normalizationは効果的ではない。なので、毎回平均をバッチごとに計算するのではなく、今までのそのクラスでの信頼度の平均というものを計算していく。また訓練が進むにつれて信頼度が上がるはずなので、それも加味する。結果としては、以下のようにやる。

Image in a image block
  • avgconavgconは当該クラスにおいて過去のBatchを平均した信頼度である。この場合は、すべてHard Labelで平均をとり、
  • ProbuiProb_{u_i}はUnlabeledのサンプルuiu_iの予測確率で、Hard Label(つまりそのクラスだと予測されたら1、それ以外は0)
  • BBはバッチサイズ。μ=nL/nU\mu = n_L/n_Uである(バッチ内の比率)

p(y)p(y)をクラス間の重みによる並べ替え

各クラスccについて、Labeledの中での出現回数をnLCn_L^C、Pseudo LabelがついているUnlabeledのデータの中での出現回数をnUCn_U^Cとする。

そして、クラス間の重みを以下のように計算する。全クラスのnU,nLn_U, n_Lの比と、U,LU,Lと逆にしたクラスccに限定した比の積である。クラスの比率が、全体よりもLが多いと重みを重くする

Image in a image block

そして、inter-classとintra-class双方の重みを乗じることで、ベイズの定理により、Unlabeledの各サンプルについての重みが得られる。

Image in a image block

損失関数

Image in a image block
  • LSL_Sは通常のラベル付きデータのラベルとffによる予測のSoft LabelとのCrossEntropy誤差
  • λu\lambda_uはハイパーパラメタ
  • LUL_UはUnlabeledデータがPseudo Labelを付与されたとき、それぞれの重みについて考慮したうえでの損失。Pseudo Labelで予測されたSoft Labelとffで予測されたラベルのCross Entropy誤差である。

全体のアルゴリズム

入力は以下の通り

  • DL,DUD_L, D_Uは訓練データ。それぞれnL,nUn_L, n_U個存在する。
  • AAはDomain Adaptation Algorithmで、DUDLD_U \to D_Lの写像をしつつ、Pseudo Labelを付与するアルゴリズムだと考えていい。
  • イテレーション数TT、学習率η\eta
  • クラス数kk
  • バッチサイズBB
  • 各バッチの中でのμ=nBL/nBU\mu = n_B^L / n_B^U
  • λu\lambda_u

出力

  • 予測器ff
  • Pseudo Label Giver hh
h = A(D_L, D_U) # hをまずDAのアルゴリズムで計算する。
for i in range(D_U): 
	# hによるPseudo Labelを付与
	sl_u = softlabel(h(D_U))
	hl_u = hardlabel(h(D_U))
for 1 in range(k): 
	# クラス別の平均やカウントを初期化
	avgcon[i] = 0
	cnt[i]  = 0

for t in range(T): 
	# Tイテレーション計算する。
	
	# 今の識別器でLとUいずれも予測する。
	prob_l = f(D_L)
	prob_u = f(D_U)
	
	# mu * Bである理由はわからないが、すべてのD_Uのサンプルに重みを付与している。
	for i in ange(mu * B): 
		compute weight for every sample in D_U. 
		update avgco and cnt
	
	# 損失の計算
	loss = CE(prob_l, D_L.y) + l_lambda * CE(prob_u, sl_u)
	
	backward
	update

Result

従来のBaselineとしてのFixMatchとかとも比較した悔過k、こちらの方が性能が良くなった。Labeled, Unlabeledの比率を変更してもこのアルゴリズムは問題を起こさなかった。